<?php
// L3 MIAGE Nice - Gestion de projets et Analyse des besoins - 2010-2011
// Création d'un site internet de vente de vidéos en ligne
// 
// functions_panier.php - Fonctions pour la gestion du panier d'achat
// 
// Auteur : (groupe 15) Shyn-Yuan CHENG, Abdoul Mazid DIALLO, LAGNEAU Sébastien, NJOTCHA-NJOTCHA Franck-Merlin
// 

// Fonction creerPanier - Création d"un panier d'achat
//-- Params : --
//-- Retour : booleen
function creerPanier(){
   $ret = false; // Déclaration de la valeur de retour à faux

   if (isset( $_SESSION['panier'])) $ret = true; //Si le panier existe déjà, on met le retour à vrai
   
   // Si le panier n'existe pas encore, initialiser la variable de session $_SESSION['panier']
   // qui contiendra le panier sous forme d'un tableau à 2 dimenssions et retourner vrai 
   // pour indiquer que la création s'est bien passée
   //
   else {
      $_SESSION['panier'] = array();
      $_SESSION['panier']['idProduit'] = array();
      $_SESSION['panier']['titreFilm'] = array();
      $_SESSION['panier']['nomSupport'] = array();
      $_SESSION['panier']['prixUHT'] = array();      
      $_SESSION['panier']['qte'] = array();
      $_SESSION['panier']['prixQteHT'] = array();
      $ret = true;
   }
   
   return $ret;
}


// Fonction ajouterArticle - Ajout d'articles dans un panier
//-- Params : id du produit, titre du film, nom du support, prix unitaire HT, quantité
//-- Retour : booleen
function ajouterArticle($idProduit, $titreF, $nomSupport, $prixUHT, $qte){
   // Si le panier n'existe pas encore, le créer
   //
   if (creerPanier()) {
      // Si l'article existe, augmenter la quantité de la quantité demandée
      // -- Rappel : un article est l'association d'un film à son support
      //
      $positionArticle = array_search($idProduit, $_SESSION['panier']['idProduit']);
   
      if ($positionArticle !== false) {
         $_SESSION['panier']['qte'][$positionArticle] += $qte;
         $_SESSION['panier']['prixQteHT'][$positionArticle] = $_SESSION['panier']['prixQteHT'][$positionArticle] + ($prixUHT*$qte);
      }
      
      // Sinon, on ajoute l'article dans le tableau $_SESSION['panier'] avec toutes 
      // les informations que l'on a besoin
      //
      else {
         array_push($_SESSION['panier']['idProduit'], $idProduit);
         array_push($_SESSION['panier']['titreFilm'], $titreF);
         array_push($_SESSION['panier']['nomSupport'], $nomSupport);
         array_push($_SESSION['panier']['prixUHT'], $prixUHT);
         array_push($_SESSION['panier']['qte'], $qte);
         array_push($_SESSION['panier']['prixQteHT'], $prixUHT*$qte);
      }
      
      return true;
   }
   
   // Si le panier ne se crée pas, il y a un problème
   //
   else
      return false;
}

// Fonction enlever - Supprimer un article
//-- Params : id du produit
//-- Retour : booleen
function supprimerArticle($idProduit){
   // Si le panier n'existe pas encore, le créer
   //
   if (creerPanier()) {
      // On crée un tableau temporaire du même type que celui qui contient le panier
      //
      $tmp=array();
      $tmp['idProduit'] = array();
      $tmp['titreFilm'] = array();
      $tmp['nomSupport'] = array();
      $tmp['prixUHT'] = array();      
      $tmp['qte'] = array();
      $tmp['prixQteHT'] = array();
      
      // On copie tous les éléments du paniers dans le tableau temporaire à l'exception 
      // de l'élément que l'on veut supprimer
      //
      for($i = 0; $i < count($_SESSION['panier']['idProduit']); $i++) {
         if ($_SESSION['panier']['idProduit'][$i] !== $idProduit) {
            array_push($tmp['idProduit'], $_SESSION['panier']['idProduit'][$i]);
            array_push($tmp['titreFilm'], $_SESSION['panier']['titreFilm'][$i]);
            array_push($tmp['nomSupport'], $_SESSION['panier']['nomSupport'][$i]);
            array_push($tmp['prixUHT'], $_SESSION['panier']['prixUHT'][$i]); 
            array_push($tmp['qte'], $_SESSION['panier']['qte'][$i]);
            array_push($tmp['prixQteHT'], $_SESSION['panier']['prixQteHT'][$i]);
         }	
      }
      
      // On affecte le tableau temporaire dans $_SESSION['panier'] et on détruit le tableau temporaire
      //		
      $_SESSION['panier'] = $tmp;
      unset($tmp);
      
      return true;
   }
   
   // Si le panier ne se crée pas, il y a un problème
   //
   else
      return false;
}


// Fonction calculterTTC - Calcule l'équivalent TTC d'un prix HT
//-- Params : prix HT (float)
//-- retour : prix TTC (float)
function calculerTTC($somme){
   $total = $somme+($somme*TVA);   
   return $total;
}


// Fonction enlever - Abaisser la quantité d'un article dans le panier 
//-- Params : id du produit, quantité à enlever
//-- Retour : booleen
function enlever($id, $qte){
   // Si le panier n'existe pas encore, on le crée, 
   // savoir si l'article existe déjà dans le panier
   //
   if (creerPanier()){
      $positionArticle = array_search($id, $_SESSION['panier']['idProduit']);
   
      // Si l'article existe, diminuer la quantité de la quantité demandée
      //
      if ($positionArticle !== false && $_SESSION['panier']['qte'][$positionArticle] > 0) {
         $_SESSION['panier']['qte'][$positionArticle] -= $qte;
         $_SESSION['panier']['prixQteHT'][$positionArticle] = $_SESSION['panier']['prixQteHT'][$positionArticle] - $_SESSION['panier']['prixUHT'][$positionArticle]*$qte;
   
         // Si à l'issue de la diminution, la quantité est <= 0 alors on supprime l'article du panier
         //		
         if ($_SESSION['panier']['qte'][$positionArticle] <= 0) supprimerArticle($id);
      }
      
      return true;
   }
   
   // Si le panier ne se crée pas, il y a un problème
   //
   else
      return false;
}


// Fonction MontantGlobalHT - Calcule le montant HT total du panier
//-- Params : --
//-- retour : total panier HT (float)
function MontantGlobalHT(){
   $total=0; // $total est la variable de retour
   
   // Parcourir tous les éléments du tableau et faire la somme des prixUHT au fur et à mesure
   //
   for($i = 0; $i < count($_SESSION['panier']['idProduit']); $i++)           
      $total += $_SESSION['panier']['qte'][$i] * $_SESSION['panier']['prixUHT'][$i]; 
      
   return $total;
}


// Fonction MontantGlobalTTC - Calcule le montant TTC total du panier
//-- Params : total panier HT (float)
//-- retour : total panier TTC (float)
function MontantGlobalTTC($MontantGlobalHT){
   return calculerTTC($MontantGlobalHT);
}


// Fonction calculerPrixLigneHT - Calcule le prix HT d'une ligne du panier
//-- Params : prix unitaire HT du produit (float), quantité (int)
//-- retour : prix total HT de la ligne du panier (float)
function calculerPrixLigneHT($PUHT, $qte) {
   return $PUHT*$qte;
}


// Fonction calculerPrixLigneTTC - Calcule le prix total TTC d'une ligne du panier
//-- Params : prix total HT de la ligne du panier (float)
//-- retour : prix total TTC de la ligne du panier (float)
function calculerPrixLigneTTC($PrixLigneHT) {
   return calculerTTC($PrixLigneHT);
}


// Fonction compterEltsPanier - Compte le nombre d'article dans le panier
//-- Params : --
//-- retour : Nombre d'articles dans le panier (int)
function compterEltsPanier() {
   return count($_SESSION['panier']['idProduit']);
}

?>
